#include <vector>
#include <iostream>

using namespace std;

class Pieza{
public:
	int num, sup, izq, der, inf;

  Pieza(int num);
};



class Tablero{


public:
  int  cant_rows, cant_cols, cant_colores, cant_usadas;
  vector<int> usadas;
  vector<vector <Pieza *> > posiciones;
  Tablero();


};


vector<Pieza> pedir_entrada(Tablero &t);
vector<Pieza*> piezasCandidatas(Tablero &t, vector<Pieza> &piezas, int posx, int posy);
bool noEsTablero(Tablero &t, int posx, int posy);
bool esTablero(Tablero &t, int posx, int posy);
bool recursion(Tablero &t, Tablero &t_opt, vector<Pieza> &piezas, int posx, int posy);
bool backtracking(Tablero &t, vector<Pieza> &piezas);
